// 验证字符串大中小括号是否合法
// 1、() √
// 2、()[] √
// 3、((([])) ✘
// 4、([)] ✘
// 5、))][(( ✘
import Stack from '../../structure/1.stack'
function checkStrIsLegal(str){
    let stack = new Stack()
    let parenMap = {')': '(',']': '[','}': '{'}
    let keys = Object.keys(parenMap)
    for (let i = 0,len = str.length;i < len;i++) {
        let strItem = str[i]
        // 针对右括号情况
        if (keys.includes(strItem)) {
            if (stack.size() && stack.peek() == parenMap[strItem]) {
                stack.pop()
                continue
            }
            return false
        }
        // 针对左括号情况
        else {
            stack.push(strItem)
        }
    }

    // 如果遍历完成，还有元素存在栈中，就意味着有多余的括号
    return !stack.size()
}
export {
    checkStrIsLegal
}